int g[maxn][maxn];
int get(int x,int y)
{
	int i,j;
	int tp=-2;
	if(g[x][y]!=-1)	return g[x][y];
	if(x==y)	
	{
		return g[x][y]=0;
	}
	for(i=0; i<vc[x].size(); i++)
	{
		j=vc[x][i];
		int now=get(j,y);
		if(now==-2)	continue;
			tp=max(tp,g[j][y]+1);
	}
	g[x][y]=tp;
	return tp;
}
for(i=1; i<=bcnt; i++)
{
	int tp=0;
	for(j=1; j<=bcnt; j++)
	if(i!=j)
	{
		int qq=get(i,j);
		if(g[i][j]>0)
			tp+=num[j];
	}
	maxx+=tp*num[i];
	maxx+=num[i]*(num[i]-1);
	if(num[i]>1)
		minn+=num[i];
}

